package com.example.design.singleton;

/**
 * @ClassName Singleton4
 * @Description 懒汉式(方法同步----添加同步锁)[性能差，不推荐使用]
 * 线程安全性： 线程安全
 * 是否懒加载： 懒加载
 * 性能： synchronized修饰方法，使得多线程执行退化为串行执行，性能差
 * @Author Administrator
 * @Date 2020/5/7 10:33
 * @Version 1.0
 */
public class Singleton4 {

    private static Singleton4 instance;

    private Singleton4(){}

    public synchronized static Singleton4 getInstance(){

        // 被动创建，在真正需要使用时才去创建
        if(instance == null){
            instance = new Singleton4();
        }
        return instance;
    }

    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        Singleton4 s1 = Singleton4.getInstance();
        Singleton4 s2 = Singleton4.getInstance();
        s1.setName("zhangsan4");
        s2.setName("lisi4");
        System.out.println(s1.getName());
        System.out.println(s2.getName());
        System.out.println(s1.getName().equals(s2.getName()));
    }

}
